package cn.paper;

import cn.printer.Paper;

public class TextPaper implements Paper {
    private int charPerLine=16; //每行字符数
    private int linePerPage=5; //每页行数
    private String content=""; //纸张中内容
    private int posX=0; //当前横向位置，从0到charPerLine-1
    private int posY=0; //当前行数，从0到linePerPage-1
    private int posP=1; //当前页数
    @Override
    public void putInChar(char c) {
       content+=c;
       ++posX;
       //判断是否换行
        if(posX==charPerLine){ //当横向的位置等于了每页该有的行数，
            content+=Paper.newline; //就让当前内容后面加上\r\n来进行换行
            posX=0; //当前位置重新开始
            ++posY; //行数+1
        }
        //判断是否翻页
        if(posY==linePerPage){ //当前行数=每页的行数
            content+="==第"+posP+"页==";
            content+=Paper.newline+Paper.newline; //就进行翻页，内容+\r\n\r\n
            posY=0; //新的一页从0开始
            ++posP; //当前页数+1
        }
    }

    @Override
    public String getContent() {
        String ret=this.content;
        //补齐本页空行，并显示页码
        if(!(posX==0 && posY==0)){
            int count=linePerPage-posY;
            for(int i=0;i<count;++i){
                ret+=Paper.newline;
            }
            ret+="==第"+posP+"页==";
        }
        return ret;
    }

    //使用set方法注入每行字符数
    public void setCharPerLine(int charPerLine){
        this.charPerLine=charPerLine;
    }
    //使用set方法注入每页行数
    public void setLinePerPage(int charPerLine){
        this.linePerPage=linePerPage;
    }
}
